#!/usr/bin/python
# coding:UTF-8
"""
程序通用函数库
"""
import os
import user_config as ucfg


def user_debug(print_str, print_value=''):
    if ucfg.debug:
        if print_value:
            print(print_str + ' = ' + str(print_value))
        else:
            print(str(print_str))


def day2csv(source_dir, file_name, target_dir):
    """
    将日线二进制文件转换成csv格式保存,通达信数据文件32字节为一组
    """
    # 以二进制方式打开源文件
    source_path = source_dir + '/' + file_name
    source_file = open(source_path, 'rb')
    buf = source_file.read()
    source_file.close()
    source_size = os.path.getsize(source_path)
    source_row_number = int(source_size/32)
    user_debug('源文件数', source_row_number)
    # 打开目标文件，后缀名为csv
    target_path = target_dir + '/' + file_name[2:-4]+'.csv'
    print('文件是否存在', target_path, os.path.isfile(target_path))
    # if not os.path.isfile(target_path):
    if not os.path.exists(target_path):
        target_file = open(target_path, 'w', encoding='utf-8') #覆盖写
        header = 'date,code,open,high,low,close,vol,amount'
        target_file.write(header)
        begin = 0
        end = begin + 32
        row_number = 0
    else:
        # 不为0，文件有内容。行附加。
        # 通达信数据32字节为一组，因此通达信文件大小除以32可算出通达信文件有多少行（也就是多少天）的数据。
        # 再用readlines计算出目标文件已有多少行（目标文件多了首行标题行），(行数-1)*32 即begin要开始的字节位置
        target_file = open(target_path, 'a+', encoding='utf-8') #追加写